//
// Created by webturing on 2024/1/1.
//
#include<iostream>
#include<string>
#include<map>

using namespace std;

int main() {
    //peo指的是有多少个入度为0的人
    int n, peo, i;
    //str1,str2记录每一组插入的人员
    string str1, str2;
    while (cin >> n && n) {
        peo = 0;
        map<string, int> mp;
        map<string, int>::iterator it;
        //需要进行清除原先的map中的值
        mp.clear();
        for (i = 0; i < n; ++i) {
            cin >> str1 >> str2;
            it = mp.find(str1);
            if (it == mp.end())mp[str1] = 0;
            mp[str2]++;
        }
        for (it = mp.begin(); it != mp.end(); it++) {
            //如果不止一个人的入度为0
            if (!(it->second) && peo == 1) {
                peo++;
                break;
            }
            //如果才刚刚找到入度为0的人
            if (!(it->second) && !(peo)) {
                peo++;
            }
        }
        if (peo == 1)cout << "Yes" << endl;
        else cout << "No" << endl;
    }
    return 0;
}
